A conventional telecommunications switching system comprises a variety of hardware and software components. Typical hardware components include a switching device, for routing calls into and out of the system; trunk interface devices, for interfacing the system to incoming and outgoing trunks (e.g., E1 or T1); signal generating devices for generating various call progress signals, DTMF tones, etc.; digital signal processors (DSPs) for compressing and decompressing digitally encoded voice signals and/or performing echo cancellation, and a controller for controlling the operation of the overall switching system and for providing call processing (CP) and operations, administration and maintenance (OA&M) functions. The system may also include a network management system (NMS) for such functions as configuration, accounting, fault management and testing.
A conventional wireless telecommunications switching system includes a base station controller (BSC) coupled to multiple base transceiver stations (BTS) over one or more spans, a mobile switching center (MSC), a visitor location register (VLR), a home location register (HLR), an authentication center, an operations, administration and maintenance (OA&M) center for configuring the BSC and an OA&M operation maintenance center-switching component for configuring the HLR and/or the MSC.
The various software components of such switching systems typically reside in the controller and in one or more of the other lower-level hardware components. For example, the switching device may have its own processor, executing low-level code resident in non-volatile memory in the switching device. The controller would typically interact with the other hardware components by sending specific commands or exchanging specific messages over a bus in a well-defined manner.
The software configuration of such conventional switching systems can be characterized as being tightly coupled vertically. In other words, the various layers or components of software are highly interdependent and also highly hardware- or platform-dependent. Modification of one component of software to add functionality would likely require modification of other components. Likewise, modification of the hardware, would likely require extensive modification of software. Furthermore, such software once written for a particular platform, cannot be readily redistributed over multiple, possibly remotely located processors. This makes for an inflexible switching system that cannot be readily modified.